package com.atguigu.gmall.product.Util;

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

/**
 * projectName: gmall
 *
 * @author: 陈鹏
 * time: 2022/9/22 16:04 星期四
 * description: 文件管理工具类
 */

public class FileUtil {

    static {
        try {
            //获取classpath下的配置文件
            ClassPathResource resource = new ClassPathResource("abc.conf");
            //fastdfs初始化
            ClientGlobal.init(resource.getPath());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static String fileUpload(MultipartFile file){
        try {
            //tracker 初始化
            TrackerClient trackerClient = new TrackerClient();
            //获取tracker的server
            TrackerServer trackerServer = trackerClient.getConnection();
            //通过tracker 获取storage信息
            StorageClient storageClient = new StorageClient(trackerServer, null);
            //使用storage完成文件上传,获取结果
            /**
             * 1.文件的内容
             * 2.文件的拓展名 123.jpg
             * 3.附加参数: 拍摄地点 时间 ....
             */
            String[] strings = storageClient.upload_file(file.getBytes(),
                    StringUtils.getFilenameExtension(file.getOriginalFilename()),
                    null);

            //返回文件的地址: [0]=组名 [1]= 全量路径名
            return strings[0]+"/"+strings[1];
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
